﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GC2.Bussines.BMAdmin;
using GC2.Entities.Comunes;
using GC2.Entities.Admin;
using GC2.ExceptionHandler;

public partial class ClientesGestion : GenericPage
{
    #region Propiedades
    Usuarios usuario = new Usuarios();
    private Clientes cliente = new Clientes();    
    private ExceptionConstructor exNew = new ExceptionConstructor();
    private int Accion;
    GC2.Funciones.General.FunctionsSite f = new GC2.Funciones.General.FunctionsSite();
    #endregion

    #region Controles

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            if (!this.IsPostBack)
            {
                usuario = (Usuarios)Session["UsuarioActual"];
                CargarCombo();
                Accion = Convert.ToInt16(Session["Accion"].ToString());
                btnOtro.Visible = false;
                lblCuitMal.Visible = false;
                if (Accion > 1)
                {
                    cliente = (Clientes)Session["Cliente"];
                    HidrataControles(cliente);
                    if (Accion == 2)
                    {
                        lblAccion.Text = "Modificación";
                    }
                    else
                    {
                        lblAccion.Text = "Viendo Datos";
                    }
                }
                if (Accion == 1)
                {
                    lblAccion.Text = "Nuevo Cliente";
                    FechaIng.SetFecha(DateTime.Now.Date);
                    FechaEstado.SetFecha(DateTime.Now.Date);
                }
            }
        }
        catch (Exception ex) { ErrorUI(ex); }

    }
    #endregion

    #region btnGuardar_Click
    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        try
        {
           DesHidrataControles();   
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnCancelar_Click
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        try
        {
            Response.Redirect("~/Seguridad/Default.aspx", false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnOtro_Click
    protected void btnOtro_Click(object sender, EventArgs e)
    {
        try
        {
            Limpiar();
            btnOtro.Visible = false;
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion

    #region Métodos

    #region CargarCombo
    protected void CargarCombo()
    {
        try
        {
            List<Provincias> listaProvincias = ListaProvincias();
            foreach (Provincias provincia in listaProvincias)
            {
                ListItem liItem = new ListItem();
                liItem.Value = provincia.ProvCod.ToString();
                liItem.Text = provincia.Provincia;
                cboProvincia.Items.Add(liItem);
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region HidrataControles
    /// <summary>
    /// Hidrata Controles Cliente
    /// </summary>
    /// <param name="titular"></param>
    private void HidrataControles(Clientes cliente)
    {
        try
        {
            txtNombre.Text = cliente.Nombre;
            txtDireccion.Text = cliente.Direccion;
            txtLocalidad.Text = cliente.Localidad;
            cboProvincia.SelectedValue = cliente.IdProvincia.ToString();
            txtTe1.Text = cliente.Telefono.ToString();;
            FechaIng.SetFecha(cliente.FechaIngreso);
            FechaEstado.SetFecha(cliente.FechaEstado);
            cboEstado.SelectedValue = cliente.Estado;
            txtObs.Text = cliente.Observaciones;
            if (cliente.Cuit != "")
            {
                string sTemp = cliente.Cuit.ToString();
                txtCuit1.Text = sTemp.Substring(0, 2);
                txtCuit2.Text += sTemp.Substring(2, 8);
                txtCuit3.Text += sTemp.Substring(10, 1);
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region DesHidrataControles
    /// <summary>
    /// DesHidrata Controles Proveedor
    /// </summary>
    /// <param name="titular"></param>
    private void DesHidrataControles()
    {
        try
        {
            BMClientes bmClientes = new BMClientes(Connection);

            Accion = Convert.ToInt16(Session["Accion"].ToString());
            if (Accion > 1)
            {
                cliente = (Clientes)Session["Cliente"];
            }
            cliente.Nombre = txtNombre.Text;
            cliente.Direccion = txtDireccion.Text;
            cliente.Localidad = txtLocalidad.Text;
            cliente.IdProvincia = Convert.ToInt16(cboProvincia.SelectedValue);
            cliente.Provincia = cboProvincia.SelectedItem.Text;
            if(f.isNumeric(txtTe1.Text))
            {
                cliente.Telefono = Convert.ToInt64(txtTe1.Text);
            }
            cliente.FechaIngreso = FechaIng.GetFecha();
            cliente.FechaEstado = FechaEstado.GetFecha();
            cliente.Estado = cboEstado.SelectedValue;
            cliente.Observaciones = txtObs.Text;
            if (txtCuit1.Text != "")
            {
                bool bCuit = true;
                if (!f.isNumeric(txtCuit1.Text) || txtCuit1.Text.Length != 2)
                {
                    bCuit = false;
                }
                if (!f.isNumeric(txtCuit2.Text) || txtCuit2.Text.Length != 8)
                {
                    bCuit = false;
                }
                if (!f.isNumeric(txtCuit3.Text))
                {
                    bCuit = false;
                }
                if(bCuit)
                {
                    string sTemp = txtCuit1.Text;
                    sTemp += txtCuit2.Text;
                    sTemp += txtCuit3.Text;
                
                    cliente.Cuit = sTemp;
                    lblCuitMal.Visible = false;
                }
                else
                {
                    lblCuitMal.Visible = true;
                    return;
                }
            }
            if (Accion == 1)
            {
                Usuarios usuarioNuevo = new Usuarios();
                BMUsuarios bmUsuarios = new BMUsuarios(Connection);

                usuarioNuevo.Login = cliente.Nombre;
                usuarioNuevo.PassWord = cliente.Nombre;

                usuarioNuevo = bmUsuarios.BMUsuariosInsert(usuarioNuevo);

                cliente.IdUsuario = usuarioNuevo.IdUsuario;

                cliente = bmClientes.BMClientesInsert(cliente);
                lblAccion.Text = "Nuevo Cliente Creado";
                btnGuardar.Enabled = false;
                btnOtro.Visible = true;


               
            }
            if (Accion == 2)
            {
                bmClientes.BMClientesUpdate(cliente);
                lblAccion.Text = "Cliente Actualizado";
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region Limpiar
    /// <summary>
    /// Limpia controles de Interfaz
    /// </summary>
    private void Limpiar()
    {
        try
        {
            txtNombre.Text = "";
            txtDireccion.Text = "";
            txtLocalidad.Text = "";
            cboProvincia.SelectedValue = "0";
            txtTe1.Text = "";
            txtObs.Text = "";
            lblAccion.Text = "Nuevo Cliente";
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion
}
